home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Graphics Plus
/
Graphics Plus.iso
/
amiga
/
raytrace
/
imagine
/
isl_2_0.lha
/
ISL.BNF
< prev
next >
Wrap
Text File
|
1993-10-18
|
6KB
|
286 lines
ISL.BNF - Copyright (c) 1993 Grizzly Bear Labs, last modified 10-18-93
This file describes the BNF for ISL, the Imagine Staging Language. BNF is
Backus Naur Form, a formal method for describing the syntax of a language.
It should be fairly clear from the BNF what is allowable and what is not.
This is a non-trivial document - I suggest you use ISL.doc to get an idea
of what ISL is and does and how it works, then play with the destage and
restage programs, and only then attempt to grok the grammar.
restage and islobjs both handle the entire grammar.
Before diving into the BNF, here are some things which are not in the BNF
which are true of the ISL grammar. Feel free to ignore the regular
expressions and references to flex - they are included for the advanced
user and should not be needed to understand the language.
1) Whitespace is optional. You may have an entire stage on one line, or
may start a new line between any two keywords.
2) STRING is a set of characters which is delimited by double quotes.
A legal string may contain 0 or more of any characters except for
the double quotes, since it is delimited by double quotes.
3) U32 is a token which contains one or more digits. It may not have
a decimal point nor a sign. {DIGIT}+ is the flex pattern used.
4) FLOAT is a token which contains an optional minus sign, one or more
digits, a period, and zero or more digits. \-?{DIGIT}+\.{DIGIT}*
is the flex pattern used.
5) I have not attempted to spell out the meaning of each U32, FLOAT, and
STRING, on the theory that their meanings should be obvious based on
their position in the grammar. For example, in camerahdr, defined
as CAMERA STRING, you have one keyword (CAMERA) and the name (STRING).
In this case, STRING would be the name of the CAMERA from the first
column of the Action editor. A typical value for this clause would
be CAMERA "CAMERA".
6) : means definition, | provides alternates. Eh? Take the very first
part of the BNF for an example. A stage may consist of a stagehdr
OR a stagehdr followed by a camera followed by globals followed by
objects. These, in turn, are defined individually.
7) Optional clauses contain an empty : clause followed by one or more
| clauses. An example would be genlockflag which is either :
(nothing) or GENLOCK. The grammar is riddled with these, so make
sure you get it. A stage may have zero or more objects, each of which
may have one or more positions, one or more alignments, etc.
8) File paths are stripped from file names by starting at the end of the
string, and scanning backwards until either a \ or a / has been found.
There are two possible subtle problems with this. One, if you have a
PC stage and a / in your file name or an Amiga stage and a \ in your
file name, truncation will occur. Two, ISL will not properly handle
files located in a root directory or symbolic link unless they have a
/ or a \ in their path.
Finally, here's the BNF:
stage
: stagehdr
| stagehdr camera globals objects
stagehdr
: STAGE MAXFRAMES U32
camera
: camerahdr positions alignments sizes hinges effects
camerahdr
: CAMERA STRING
globals
: globalhdr globalchunks positions alignments sizes
globalhdr
: GLOBALS STRING
globalchunks
:
| globalchunks globalchunk
globalchunk
: ACTOR frames
BRUSH STRING U32
BACKDROP STRING U32
AMBIENT rgb HORIZON rgb +ZENITH rgb -ZENITH rgb
FOG btl FOG rgb
STARFIELD FLOAT TRANSITION U32 SKYBLEND U32 genlockflag
objects
:
| objects object
object
: objecthdr filechunks positions alignments sizes hinges effects
| lighthdr litechunks positions alignments sizes hinges
| axishdr axischunks positions alignments sizes hinges
objecthdr
: OBJECT STRING quickdrawflag
lighthdr
: LIGHT STRING
axishdr
: AXIS STRING quickdrawflag
positions
:
| positions posnchunk
| positions pth2chunk
posnchunk
: POSITION frames xyz
pth2chunk
: POSITION frames PATH STRING ACCEL U32 FLOAT DECEL U32 FLOAT
alignments
:
| alignments algnchunk
| alignments palnchunk
| alignments talnchunk
algnchunk
: ALIGN frames xyz
palnchunk
: ALIGN frames PATH yhorizontalflag
talnchunk
: ALIGN frames OBJECT STRING YROT FLOAT FLOAT
sizes
:
| sizes osizchunk
osizchunk
: SIZE frames xyz
filechunks
:
| filechunks filechunk
filechunk
: ACTOR frames NAME STRING CYCLE FLOAT FLOAT reverseflag TRANSITION U32
litechunks
:
| litechunks litechunk
litechunk
: ACTOR frames sccshape shadowflag diminishflag rgb TRANSITION U32
axischunks
:
| axischunks axischunk
axischunk
: ACTOR frames
hinges
:
| hinges hingchunk
hingchunk
: HINGE frames OBJECT STRING
effects
:
| effects effect
effect
: EFFECT U32 frames Boing2.0 STRING
xyzaxis ucdsquash SHRINK FLOAT TIMES U32
| EFFECT U32 frames Explode STRING
srlshape xyzaxis EXPLOSION FLOAT FLOAT SCALING FLOAT
ROTATIONS FLOAT FLOAT SEED U32
returnflag reverseflag
| EFFECT U32 frames Fireworks STRING
srlshape xyzaxis EXPLOSION FLOAT FLOAT SCALING FLOAT
ROTATIONS FLOAT FLOAT EXPANSION FLOAT DISTANCE FLOAT SEED U32
sparkleflag
| EFFECT U32 frames Flash STRING
ON U32 OFF U32 startflag
| EFFECT U32 frames Grow STRING
YROT FLOAT XSCALE FLOAT
ZSCALE FLOAT XTRANS FLOAT ZTRANS FLOAT
alignyflag keepxflag mirrorflag reverseflag
| EFFECT U32 frames Ripple STRING
lrtoggle WAVELENGTH FLOAT ZAMP FLOAT TRAVEL FLOAT RIPPLES U32
| EFFECT U32 frames Rotate2.0 STRING
xyzaxis DEGREES FLOAT
| EFFECT U32 frames Tumble STRING
rzaxis ROTATIONS FLOAT FLOAT SEED U32
frames
: FRAMES U32 U32
xyz
: XYZ FLOAT FLOAT FLOAT
rgb
: RGB FLOAT FLOAT FLOAT
btl
: BTL FLOAT FLOAT FLOAT
xyzaxis
: XAXIS
| YAXIS
| ZAXIS
rzaxis
: RANDOMAXIS
| ZAXIS
ucdsquash
: +SQUASH
| SQUASH
| -SQUASH
srlshape
: SPHERICAL
| RADIAL
| LINEAR
sccshape
: SPHERICAL
| CYLINDRICAL
| CONICAL
sparkleflag
:
| SPARKLE
startflag
: STARTON
| STARTOFF
alignyflag
:
| ALIGNY
keepxflag
:
| KEEPX
mirrorflag
:
| MIRROR
reverseflag
:
| REVERSE
returnflag
:
| RETURN
lrtoggle
: LINEAR
| RADIAL
shadowflag
:
| SHADOW
diminishflag
:
| DIMINISH
genlockflag
:
| GENLOCK
yhorizontalflag
:
| YHORIZONTAL
quickdrawflag
:
| QUICKDRAW